Group Predictions

Row

Win percentage for the week

Season Win Percentage

Games Correct

143

Games Picked

222

Number of predictions

68

Row

This Week’s Predictions
Game Prediction Winner Correct Correct Votes Correct Percent
1 Las Vegas Raiders Las Vegas Raiders Yes 39 0.5735
2 Cincinnati Bengals Cincinnati Bengals Yes 57 0.8382
3 Indianapolis Colts Indianapolis Colts Yes 37 0.5441
4 Detroit Lions Detroit Lions Yes 51 0.7500
5 Cleveland Browns Cleveland Browns Yes 57 0.8382
6 Atlanta Falcons Carolina Panthers No 5 0.0735
7 Houston Texans Houston Texans Yes 35 0.5147
8 Kansas City Chiefs Kansas City Chiefs Yes 66 0.9706
9 New Orleans Saints New Orleans Saints Yes 45 0.6618
10 Miami Dolphins Miami Dolphins Yes 65 0.9559
11 Green Bay Packers Tampa Bay Buccaneers No 15 0.2206
12 San Francisco 49ers San Francisco 49ers Yes 66 0.9706
13 Los Angeles Rams Los Angeles Rams Yes 61 0.8971
14 Dallas Cowboys Buffalo Bills No 23 0.3382
15 Baltimore Ravens Baltimore Ravens Yes 57 0.8382
16 Philadelphia Eagles Seattle Seahawks No 7 0.1029

Individual Predictions

row

Individual Table

Individual Results
Week 15
Name Weekly # Correct Percent Weeks Picked Season Percent Adj Season Percent Season Trend
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Week 12 Week 13 Week 14 Week 15
Cody Koerwitz 7 9 11 12 7 10 6 NA 9 9 10 10 9 6 13 0.8125 14 0.6214 0.5800
DAVID PLATE 8 NA 8 9 8 10 5 9 11 8 9 12 NA 7 13 0.8125 13 0.6062 0.5254
Shaun Dahl 8 8 10 10 7 9 5 13 9 8 NA NA 8 8 13 0.8125 13 0.6042 0.5236
Keithon Corpening 8 NA NA NA NA NA NA 11 12 9 8 10 6 8 12 0.7500 9 0.6269 0.3761
Ryan Wiggins 8 11 11 12 7 11 5 11 10 8 10 10 7 6 12 0.7500 15 0.6261 0.6261
Patrick Tynan 8 8 10 11 7 NA 5 11 10 7 11 13 8 5 12 0.7500 14 0.6087 0.5681
PABLO BURGOSRAMOS 9 11 10 12 7 12 6 8 9 7 10 NA 8 3 12 0.7500 14 0.6019 0.5618
Bunnaro Sun 9 10 9 8 9 9 6 9 11 8 10 10 8 5 12 0.7500 15 0.5991 0.5991
WAYNE SCHOFIELD 12 9 7 NA 8 NA 5 10 7 NA 10 NA 8 8 12 0.7500 11 0.5963 0.4373
Amy Asberry 8 9 10 9 9 8 5 10 6 9 7 10 9 7 12 0.7500 15 0.5766 0.5766
Steven Webster 8 8 6 8 9 8 6 10 10 8 10 NA 7 6 12 0.7500 14 0.5631 0.5256
Robert Lynch 9 9 6 10 10 6 4 9 10 5 9 8 7 6 12 0.7500 15 0.5405 0.5405
Justin Crick 11 11 11 13 8 11 4 11 11 8 9 12 9 8 11 0.6875 15 0.6667 0.6667
William Schouviller 10 9 11 10 8 9 NA 13 10 9 9 10 10 6 11 0.6875 14 0.6459 0.6028
Ramar Williams NA 11 11 9 8 8 6 12 NA 8 NA 13 9 6 11 0.6875 12 0.6292 0.5034
Anthony Bloss 8 10 11 12 10 10 5 9 9 8 9 11 10 6 11 0.6875 15 0.6261 0.6261
Montee Brown 7 NA NA 9 9 11 6 12 11 8 10 12 8 6 11 0.6875 13 0.6250 0.5417
Cheryl Brown 10 12 11 9 6 9 6 10 8 9 8 12 8 8 11 0.6875 15 0.6171 0.6171
Terry Hardison 10 10 9 11 7 9 4 11 9 10 9 11 8 7 11 0.6875 15 0.6126 0.6126
Paul Presti 9 10 12 9 8 9 5 8 NA 9 9 NA 8 10 11 0.6875 13 0.6094 0.5281
Stephen Bush 7 10 10 9 7 10 6 12 NA 5 10 11 8 8 11 0.6875 14 0.5962 0.5565
Pamela AUGUSTINE 11 13 6 9 6 9 5 10 9 NA 10 11 8 6 11 0.6875 14 0.5962 0.5565
Brian Hollmann 8 13 8 9 8 9 6 13 8 8 8 12 6 5 11 0.6875 15 0.5946 0.5946
Earl Dixon 9 11 8 12 5 NA 7 8 9 8 9 12 8 6 11 0.6875 14 0.5942 0.5546
Daniel Halse 8 9 10 NA NA NA 7 11 NA 7 7 NA 8 NA 11 0.6875 9 0.5909 0.3545
Robert Gelo 6 9 10 10 9 11 5 11 6 9 9 10 8 6 11 0.6875 15 0.5856 0.5856
Thomas Brenstuhl 10 NA 8 8 8 9 5 9 11 6 11 NA 8 5 11 0.6875 13 0.5737 0.4972
Steven Curtis NA NA 11 7 8 10 6 7 8 7 7 11 7 8 11 0.6875 13 0.5684 0.4926
Khalil Ibrahim 7 12 9 NA 7 10 6 10 9 5 7 11 5 7 11 0.6875 14 0.5631 0.5256
Rafael Torres 6 8 12 11 NA NA 6 NA 9 5 10 8 5 6 11 0.6875 12 0.5480 0.4384
Ryan Shipley 3 8 7 6 6 7 5 10 9 6 9 NA 5 6 11 0.6875 14 0.4757 0.4440
Chris Papageorge 11 11 11 10 8 9 5 11 12 8 8 NA 10 NA 10 0.6250 13 0.6492 0.5626
Jason Schattel 7 10 9 11 9 10 3 13 12 9 10 12 9 6 10 0.6250 15 0.6306 0.6306
Bradley Hobson 8 10 11 12 8 11 4 NA 8 9 9 12 NA 6 10 0.6250 13 0.6114 0.5299
Eric Hahn 9 13 7 9 8 10 6 9 10 6 11 12 9 6 10 0.6250 15 0.6081 0.6081
Karen Coleman 7 10 NA 10 8 9 4 9 13 11 9 12 8 6 10 0.6250 14 0.6058 0.5654
Michael Moss 10 NA 11 13 7 9 4 10 9 8 9 10 8 5 10 0.6250 14 0.5971 0.5573
Walter Archambo 7 10 10 11 7 9 5 9 12 NA 8 11 9 5 10 0.6250 14 0.5913 0.5519
Jonathon Leslein 9 9 9 9 7 11 5 9 8 10 10 NA 9 5 10 0.6250 14 0.5825 0.5437
Shawn Carden 9 12 6 9 8 9 5 10 9 8 9 12 7 6 10 0.6250 15 0.5811 0.5811
John Plaster 8 12 8 10 NA NA 6 9 7 10 9 7 8 8 10 0.6250 13 0.5803 0.5029
Manuel Vargas 10 9 11 12 7 10 6 12 5 5 7 8 9 7 10 0.6250 15 0.5766 0.5766
Gregory Flint 6 11 NA 11 8 10 NA NA 9 5 8 NA 9 5 10 0.6250 11 0.5644 0.4139
Gabriel Quinones 9 11 12 12 6 9 6 11 NA 8 9 NA 9 8 9 0.5625 13 0.6198 0.5372
Ryan Cvik 11 11 9 13 6 10 8 8 6 8 10 10 8 9 9 0.5625 15 0.6126 0.6126
Brian Patterson 10 10 8 11 7 11 5 10 10 8 11 12 7 6 9 0.5625 15 0.6081 0.6081
Paul Shim 10 9 10 11 7 9 4 10 10 8 11 10 8 8 9 0.5625 15 0.6036 0.6036
Aubrey Conn 9 12 8 11 9 9 4 11 11 8 7 12 8 5 9 0.5625 15 0.5991 0.5991
James Small 8 8 13 9 8 10 8 10 12 6 10 9 5 7 9 0.5625 15 0.5946 0.5946
Ronald Schmidt 11 13 11 8 8 11 5 9 8 8 7 NA 7 7 9 0.5625 14 0.5922 0.5527
Brandon Parks 8 8 NA NA 9 9 5 9 9 9 8 10 10 10 9 0.5625 13 0.5885 0.5100
Daniel Baller 6 12 11 9 8 9 3 10 8 9 10 9 8 9 9 0.5625 15 0.5856 0.5856
Anthony Brinson 10 11 8 6 10 9 8 10 9 7 8 11 9 5 9 0.5625 15 0.5856 0.5856
Yiming Hu 9 10 8 12 7 9 6 9 10 8 10 NA 7 6 9 0.5625 14 0.5825 0.5437
Daniel Kuehl 6 10 8 11 7 9 7 12 7 6 10 11 8 6 9 0.5625 15 0.5721 0.5721
Kevin Kehoe 9 10 11 12 7 8 6 10 7 8 8 8 NA 6 9 0.5625 14 0.5694 0.5314
Robert Martin 10 9 6 NA 9 9 6 9 NA 5 9 9 6 8 9 0.5625 13 0.5417 0.4695
Cherylynn Vidal 10 9 9 12 9 7 4 6 9 7 NA 9 6 5 9 0.5625 14 0.5337 0.4981
George Sweet 9 11 10 12 7 10 10 NA 11 8 10 13 9 8 8 0.5000 14 0.6602 0.6162
Antonio Mitchell 10 12 NA 11 10 10 5 12 9 NA 10 12 NA 6 8 0.5000 12 0.6354 0.5083
MICHAEL BRANSON 8 11 10 12 9 10 4 11 10 7 8 NA 10 9 8 0.5000 14 0.6165 0.5754
Kristen White 7 13 8 11 6 7 7 10 8 6 10 7 8 7 8 0.5000 15 0.5541 0.5541
Justin Thrift 9 8 9 8 9 7 5 11 7 6 10 NA 7 9 8 0.5000 14 0.5485 0.5119
Trevor MACGAVIN 6 10 8 NA 6 7 4 NA 6 6 9 13 7 9 8 0.5000 13 0.5211 0.4516
James Tierney 9 10 NA 10 10 12 7 10 8 9 9 10 8 8 7 0.4375 14 0.6106 0.5699
James Blejski 8 11 10 14 NA 9 7 12 7 6 9 9 9 6 7 0.4375 14 0.5962 0.5565
Melissa Printup 8 NA 8 7 10 7 6 NA NA 5 9 9 NA 9 7 0.4375 11 0.5215 0.3824
Kevin Green 9 12 9 9 8 9 7 NA NA 6 10 11 4 7 6 0.3750 13 0.5573 0.4830
Stephen Woolwine 8 13 9 NA NA 9 NA 11 11 NA 10 12 9 NA NA 0.0000 9 0.6866 0.4120
Michael Edmunds 10 12 10 10 NA NA NA NA NA NA NA NA NA NA NA 0.0000 4 0.6774 0.1806
Kevin O'NEILL 8 11 11 13 7 NA NA 10 NA NA NA NA NA NA NA 0.0000 6 0.6522 0.2609
Shelly Bailey 9 10 NA 10 8 11 6 NA 13 7 9 13 NA NA NA 0.0000 10 0.6486 0.4324
Sarah Sweet 9 12 12 9 8 NA 6 11 11 10 8 9 6 NA NA 0.0000 12 0.6307 0.5046
Carlos Caceres 10 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.0000 1 0.6250 0.0417
Vincent Scannelli 11 11 8 11 7 NA 5 9 12 10 10 NA 8 6 NA 0.0000 12 0.6171 0.4937
Donald Park 8 12 7 9 NA NA 6 10 11 NA 9 NA NA NA NA 0.0000 8 0.6050 0.3227
Matthew Schultz 8 NA 10 8 9 9 6 10 11 8 9 12 5 NA NA 0.0000 12 0.6000 0.4800
Daniel Major 8 13 6 7 8 11 7 11 NA NA 9 NA 7 NA NA 0.0000 10 0.5918 0.3945
George Mancini 7 12 10 10 9 10 6 NA 7 9 9 11 5 7 NA 0.0000 13 0.5895 0.5109
William Sherman 8 11 10 10 6 NA 5 NA 9 NA 9 NA NA NA NA 0.0000 8 0.5812 0.3100
Charlene Redmer 9 9 NA 9 9 11 NA 10 8 7 8 NA 6 NA NA 0.0000 10 0.5811 0.3874
Rahmatullah Sharifi 11 9 8 11 8 8 5 NA NA NA NA NA NA NA NA 0.0000 7 0.5769 0.2692
Jamal Willis 8 10 NA NA NA NA NA 9 NA NA NA NA NA NA NA 0.0000 3 0.5625 0.1125
Jason James 9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.0000 1 0.5625 0.0375
Michael Beck 9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.0000 1 0.5625 0.0375
THOMAS MCCOY 8 10 9 7 8 9 7 11 7 7 NA 10 5 8 NA 0.0000 13 0.5521 0.4785
Alexander Santillan 5 NA 8 9 5 11 6 11 8 9 7 9 8 8 NA 0.0000 13 0.5474 0.4744
David Spielman 8 NA 11 NA NA NA 3 NA 7 8 9 NA NA NA NA 0.0000 6 0.5412 0.2165
Min Choi 6 7 9 11 7 10 5 13 7 5 NA NA NA NA NA 0.0000 10 0.5405 0.3603
Derrick Zantt 11 6 7 NA 6 9 6 11 NA NA NA NA NA NA NA 0.0000 7 0.5385 0.2513
Rodney Cathcart NA NA NA NA NA NA NA NA NA NA NA NA 7 NA NA 0.0000 1 0.5385 0.0359
DERRICK ELAM 6 9 11 10 10 7 NA 5 7 7 6 NA 7 9 NA 0.0000 12 0.5311 0.4249
TYREE BUNDY 8 8 NA NA NA NA NA NA NA NA NA NA NA NA NA 0.0000 2 0.5000 0.0667
Edward Ford 6 8 NA NA NA NA NA NA NA NA NA NA NA NA NA 0.0000 2 0.4375 0.0583

Individual Plots

Season Leaderboard

Season Leaderboard (Season Percent)
Week 15
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Stephen Woolwine 1 9 0.6866 0.4120
2 Michael Edmunds 0 4 0.6774 0.1806
3 Justin Crick 0 15 0.6667 0.6667
4 George Sweet 2 14 0.6602 0.6162
5 Kevin O'NEILL 0 6 0.6522 0.2609
6 Chris Papageorge 1 13 0.6492 0.5626
7 Shelly Bailey 2 10 0.6486 0.4324
8 William Schouviller 2 14 0.6459 0.6028
9 Antonio Mitchell 1 12 0.6354 0.5083
10 Sarah Sweet 0 12 0.6307 0.5046
11 Jason Schattel 1 15 0.6306 0.6306
12 Ramar Williams 1 12 0.6292 0.5034
13 Keithon Corpening 0 9 0.6269 0.3761
14 Anthony Bloss 2 15 0.6261 0.6261
14 Ryan Wiggins 0 15 0.6261 0.6261
16 Carlos Caceres 0 1 0.6250 0.0417
16 Montee Brown 0 13 0.6250 0.5417
18 Cody Koerwitz 1 14 0.6214 0.5800
19 Gabriel Quinones 0 13 0.6198 0.5372
20 Cheryl Brown 0 15 0.6171 0.6171
20 Vincent Scannelli 0 12 0.6171 0.4937
22 MICHAEL BRANSON 1 14 0.6165 0.5754
23 Ryan Cvik 0 15 0.6126 0.6126
23 Terry Hardison 0 15 0.6126 0.6126
25 Bradley Hobson 0 13 0.6114 0.5299
26 James Tierney 2 14 0.6106 0.5699
27 Paul Presti 1 13 0.6094 0.5281
28 Patrick Tynan 2 14 0.6087 0.5681
29 Brian Patterson 1 15 0.6081 0.6081
29 Eric Hahn 2 15 0.6081 0.6081
31 DAVID PLATE 1 13 0.6062 0.5254
32 Karen Coleman 2 14 0.6058 0.5654
33 Donald Park 0 8 0.6050 0.3227
34 Shaun Dahl 2 13 0.6042 0.5236
35 Paul Shim 1 15 0.6036 0.6036
36 PABLO BURGOSRAMOS 1 14 0.6019 0.5618
37 Matthew Schultz 0 12 0.6000 0.4800
38 Aubrey Conn 0 15 0.5991 0.5991
38 Bunnaro Sun 0 15 0.5991 0.5991
40 Michael Moss 0 14 0.5971 0.5573
41 WAYNE SCHOFIELD 1 11 0.5963 0.4373
42 James Blejski 1 14 0.5962 0.5565
42 Pamela AUGUSTINE 1 14 0.5962 0.5565
42 Stephen Bush 0 14 0.5962 0.5565
45 Brian Hollmann 2 15 0.5946 0.5946
45 James Small 1 15 0.5946 0.5946
47 Earl Dixon 0 14 0.5942 0.5546
48 Ronald Schmidt 1 14 0.5922 0.5527
49 Daniel Major 1 10 0.5918 0.3945
50 Walter Archambo 0 14 0.5913 0.5519
51 Daniel Halse 0 9 0.5909 0.3545
52 George Mancini 0 13 0.5895 0.5109
53 Brandon Parks 2 13 0.5885 0.5100
54 Anthony Brinson 1 15 0.5856 0.5856
54 Daniel Baller 0 15 0.5856 0.5856
54 Robert Gelo 0 15 0.5856 0.5856
57 Jonathon Leslein 0 14 0.5825 0.5437
57 Yiming Hu 0 14 0.5825 0.5437
59 William Sherman 0 8 0.5812 0.3100
60 Charlene Redmer 0 10 0.5811 0.3874
60 Shawn Carden 0 15 0.5811 0.5811
62 John Plaster 0 13 0.5803 0.5029
63 Rahmatullah Sharifi 0 7 0.5769 0.2692
64 Amy Asberry 0 15 0.5766 0.5766
64 Manuel Vargas 0 15 0.5766 0.5766
66 Thomas Brenstuhl 1 13 0.5737 0.4972
67 Daniel Kuehl 0 15 0.5721 0.5721
68 Kevin Kehoe 0 14 0.5694 0.5314
69 Steven Curtis 0 13 0.5684 0.4926
70 Gregory Flint 0 11 0.5644 0.4139
71 Khalil Ibrahim 0 14 0.5631 0.5256
71 Steven Webster 0 14 0.5631 0.5256
73 Jamal Willis 0 3 0.5625 0.1125
73 Jason James 0 1 0.5625 0.0375
73 Michael Beck 0 1 0.5625 0.0375
76 Kevin Green 0 13 0.5573 0.4830
77 Kristen White 1 15 0.5541 0.5541
78 THOMAS MCCOY 0 13 0.5521 0.4785
79 Justin Thrift 0 14 0.5485 0.5119
80 Rafael Torres 0 12 0.5480 0.4384
81 Alexander Santillan 0 13 0.5474 0.4744
82 Robert Martin 0 13 0.5417 0.4695
83 David Spielman 0 6 0.5412 0.2165
84 Min Choi 1 10 0.5405 0.3603
84 Robert Lynch 1 15 0.5405 0.5405
86 Derrick Zantt 0 7 0.5385 0.2513
86 Rodney Cathcart 0 1 0.5385 0.0359
88 Cherylynn Vidal 0 14 0.5337 0.4981
89 DERRICK ELAM 1 12 0.5311 0.4249
90 Melissa Printup 1 11 0.5215 0.3824
91 Trevor MACGAVIN 1 13 0.5211 0.4516
92 TYREE BUNDY 0 2 0.5000 0.0667
93 Ryan Shipley 0 14 0.4757 0.4440
94 Edward Ford 0 2 0.4375 0.0583

Adjusted Season Leaderboard

Season Leaderboard (Adjusted Season Percent)
Week 15
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Justin Crick 0 15 0.6667 0.6667
2 Jason Schattel 1 15 0.6306 0.6306
3 Anthony Bloss 2 15 0.6261 0.6261
3 Ryan Wiggins 0 15 0.6261 0.6261
5 Cheryl Brown 0 15 0.6171 0.6171
6 George Sweet 2 14 0.6602 0.6162
7 Ryan Cvik 0 15 0.6126 0.6126
7 Terry Hardison 0 15 0.6126 0.6126
9 Brian Patterson 1 15 0.6081 0.6081
9 Eric Hahn 2 15 0.6081 0.6081
11 Paul Shim 1 15 0.6036 0.6036
12 William Schouviller 2 14 0.6459 0.6028
13 Aubrey Conn 0 15 0.5991 0.5991
13 Bunnaro Sun 0 15 0.5991 0.5991
15 Brian Hollmann 2 15 0.5946 0.5946
15 James Small 1 15 0.5946 0.5946
17 Anthony Brinson 1 15 0.5856 0.5856
17 Daniel Baller 0 15 0.5856 0.5856
17 Robert Gelo 0 15 0.5856 0.5856
20 Shawn Carden 0 15 0.5811 0.5811
21 Cody Koerwitz 1 14 0.6214 0.5800
22 Amy Asberry 0 15 0.5766 0.5766
22 Manuel Vargas 0 15 0.5766 0.5766
24 MICHAEL BRANSON 1 14 0.6165 0.5754
25 Daniel Kuehl 0 15 0.5721 0.5721
26 James Tierney 2 14 0.6106 0.5699
27 Patrick Tynan 2 14 0.6087 0.5681
28 Karen Coleman 2 14 0.6058 0.5654
29 Chris Papageorge 1 13 0.6492 0.5626
30 PABLO BURGOSRAMOS 1 14 0.6019 0.5618
31 Michael Moss 0 14 0.5971 0.5573
32 James Blejski 1 14 0.5962 0.5565
32 Pamela AUGUSTINE 1 14 0.5962 0.5565
32 Stephen Bush 0 14 0.5962 0.5565
35 Earl Dixon 0 14 0.5942 0.5546
36 Kristen White 1 15 0.5541 0.5541
37 Ronald Schmidt 1 14 0.5922 0.5527
38 Walter Archambo 0 14 0.5913 0.5519
39 Jonathon Leslein 0 14 0.5825 0.5437
39 Yiming Hu 0 14 0.5825 0.5437
41 Montee Brown 0 13 0.6250 0.5417
42 Robert Lynch 1 15 0.5405 0.5405
43 Gabriel Quinones 0 13 0.6198 0.5372
44 Kevin Kehoe 0 14 0.5694 0.5314
45 Bradley Hobson 0 13 0.6114 0.5299
46 Paul Presti 1 13 0.6094 0.5281
47 Khalil Ibrahim 0 14 0.5631 0.5256
47 Steven Webster 0 14 0.5631 0.5256
49 DAVID PLATE 1 13 0.6062 0.5254
50 Shaun Dahl 2 13 0.6042 0.5236
51 Justin Thrift 0 14 0.5485 0.5119
52 George Mancini 0 13 0.5895 0.5109
53 Brandon Parks 2 13 0.5885 0.5100
54 Antonio Mitchell 1 12 0.6354 0.5083
55 Sarah Sweet 0 12 0.6307 0.5046
56 Ramar Williams 1 12 0.6292 0.5034
57 John Plaster 0 13 0.5803 0.5029
58 Cherylynn Vidal 0 14 0.5337 0.4981
59 Thomas Brenstuhl 1 13 0.5737 0.4972
60 Vincent Scannelli 0 12 0.6171 0.4937
61 Steven Curtis 0 13 0.5684 0.4926
62 Kevin Green 0 13 0.5573 0.4830
63 Matthew Schultz 0 12 0.6000 0.4800
64 THOMAS MCCOY 0 13 0.5521 0.4785
65 Alexander Santillan 0 13 0.5474 0.4744
66 Robert Martin 0 13 0.5417 0.4695
67 Trevor MACGAVIN 1 13 0.5211 0.4516
68 Ryan Shipley 0 14 0.4757 0.4440
69 Rafael Torres 0 12 0.5480 0.4384
70 WAYNE SCHOFIELD 1 11 0.5963 0.4373
71 Shelly Bailey 2 10 0.6486 0.4324
72 DERRICK ELAM 1 12 0.5311 0.4249
73 Gregory Flint 0 11 0.5644 0.4139
74 Stephen Woolwine 1 9 0.6866 0.4120
75 Daniel Major 1 10 0.5918 0.3945
76 Charlene Redmer 0 10 0.5811 0.3874
77 Melissa Printup 1 11 0.5215 0.3824
78 Keithon Corpening 0 9 0.6269 0.3761
79 Min Choi 1 10 0.5405 0.3603
80 Daniel Halse 0 9 0.5909 0.3545
81 Donald Park 0 8 0.6050 0.3227
82 William Sherman 0 8 0.5812 0.3100
83 Rahmatullah Sharifi 0 7 0.5769 0.2692
84 Kevin O'NEILL 0 6 0.6522 0.2609
85 Derrick Zantt 0 7 0.5385 0.2513
86 David Spielman 0 6 0.5412 0.2165
87 Michael Edmunds 0 4 0.6774 0.1806
88 Jamal Willis 0 3 0.5625 0.1125
89 TYREE BUNDY 0 2 0.5000 0.0667
90 Edward Ford 0 2 0.4375 0.0583
91 Carlos Caceres 0 1 0.6250 0.0417
92 Jason James 0 1 0.5625 0.0375
92 Michael Beck 0 1 0.5625 0.0375
94 Rodney Cathcart 0 1 0.5385 0.0359

Data

---
title: "2023 NFL Moneyline Picks"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: spacelab
    orientation: rows
    vertical_layout: fill
    social: ["menu"]
    source_code: embed
    navbar:
      - { title: "Created by: Daniel Baller", icon: "fa-github", href: "https://github.com/danielpballer"  }
---


```{r setup, include=FALSE}
#    source_code: embed
library(flexdashboard)
library(tidyverse)
library(data.table)
library(formattable)
library(ggpubr)
library(ggrepel)
library(gt)
library(glue)
library(ggthemes)
library(hrbrthemes)
library(sparkline)
library(plotly)
library(htmlwidgets)
library(mdthemes)
library(ggtext)
library(ggnewscale)
library(DT)
source("./Functions/functions2.R")

thematic::thematic_rmd(font = "auto")

```

```{r Reading in our picks files, include=FALSE}
current_week = 15 #Set what week it is
week_1 = read_csv("./CSV_Data_Files/2023 NFL Week 1.csv")
week_2 = read_csv("./CSV_Data_Files/2023 NFL Week 2.csv")
week_3 = read_csv("./CSV_Data_Files/2023 NFL Week 3.csv")
week_4 = read_csv("./CSV_Data_Files/2023 NFL Week 4.csv")
week_5 = read_csv("./CSV_Data_Files/2023 NFL Week 5.csv")
week_6 = read_csv("./CSV_Data_Files/2023 NFL Week 6.csv")
week_7 = read_csv("./CSV_Data_Files/2023 NFL Week 7.csv")
week_8 = read_csv("./CSV_Data_Files/2023 NFL Week 8.csv")
week_9 = read_csv("./CSV_Data_Files/2023 NFL Week 9.csv")
week_10 = read_csv("./CSV_Data_Files/2023 NFL Week 10.csv")
week_11 = read_csv("./CSV_Data_Files/2023 NFL Week 11.csv")
week_12 = read_csv("./CSV_Data_Files/2023 NFL Week 12.csv")
week_13 = read_csv("./CSV_Data_Files/2023 NFL Week 13.csv")
week_14 = read_csv("./CSV_Data_Files/2023 NFL Week 14.csv")
week_15 = read_csv("./CSV_Data_Files/2023 NFL Week 15.csv")
# week_16 = read_csv("./CSV_Data_Files/2023 NFL Week 16.csv")
# week_17 = read_csv("./CSV_Data_Files/2023 NFL Week 17.csv")
# week_18 = read_csv("./CSV_Data_Files/2023 NFL Week 18.csv")
# week_19 = read_csv("./CSV_Data_Files/2023 NFL Wild Card.csv")
# week_20 = read_csv("./CSV_Data_Files/2023 NFL Divisional Round.csv")
# week_21 = read_csv("./CSV_Data_Files/2023 NFL Conference Round.csv")
# week_22 = read_csv("./CSV_Data_Files/2023 NFL Super Bowl.csv")

#reading in scores
Scores = read_csv(glue::glue("./CSV_Data_Files/NFL_Scores_{current_week}.csv")) 

#reading in CBS Prediction Records
cbs = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_{current_week}.csv")) %>% 
  mutate(Percent = round(Percent,4))
cbs_season = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_Season_{current_week}.csv"))

#reading in ESPN Prediction Records
espn = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))
espn_season = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_Season_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))

#Odds not working for the 2023 season.  Need to fix scrape code for next year.
#Reading in the moneyline odds for each team and cleaning the team names
# odds_wk1 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_1.csv"))
# odds_wk2 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_2.csv"))
# odds_wk3 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_3.csv"))
# odds_wk4 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_4.csv"))
# odds_wk5 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_5.csv"))
# odds_wk6 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_6.csv"))
# odds_wk7 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_7.csv"))
# odds_wk8 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_8.csv"))
# odds_wk9 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_9.csv"))
# odds_wk10 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_10.csv"))
# odds_wk11 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_11.csv"))
# odds_wk12 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_12.csv"))
# odds_wk13 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_13.csv"))
# odds_wk14 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_14.csv"))
# odds_wk15 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_15.csv"))
# odds_wk16 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_16.csv"))
# odds_wk17 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_17.csv"))
# odds_wk18 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_18.csv"))
# odds_wk19 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_19.csv"))
# odds_wk20 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_20.csv"))
# odds_wk21 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_21.csv"))
# odds_wk22 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_22.csv"))

####################UPDATE THESE###############################
inst.picks = list(week_1, week_2, week_3, week_4, week_5, week_6, week_7, week_8, week_9, week_10, week_11, week_12, week_13, week_14, week_15) #, week_16, week_17, week_18, week_19, week_20, week_21) #add in the additional weeks
# odds = rbind(odds_wk1, odds_wk2, odds_wk3, odds_wk4, odds_wk5, odds_wk6, odds_wk7, odds_wk8,
#              odds_wk9, odds_wk10, odds_wk11, odds_wk12) #add in the additional weeks
####################END OF UPDATE##############################

weeks = as.list(seq(1:current_week)) #creating a list of each week number
```

```{r read in scores clean data, include=FALSE}
#Cleaning Odds Data
# cl_odds = odds_cleaning(odds)

#Cleaning scores data
Scores = cleaning2(Scores)

#creating a list of winners for each week
winners = map(weeks, weekly_winners)

#creating a vector of this weeks winners
this_week = pull(winners[[length(winners)]])  

#Getting the number of games for each week
weekly_number_of_games = map_dbl(weeks, week_number_games)
```

```{r Group Predictions, include=FALSE}
#Creating the list of everyones predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Adding who won to the predictions
with_winners = map2(pred_table, winners, adding_winners)

#Creating results for each week.
results = map2(with_winners,weekly_number_of_games, results_fn)
```


```{r Displaying Group Results, echo=FALSE}
#Displaying the group results

inst_group_table = results[[length(results)]] %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    #subtitle = md(glue("Week {length(results)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="No"
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="Yes"
    )) %>% 
  tab_options(
    data_row.padding = px(3),
    container.height = "100%"
   )
```

```{r Weekly and season Group Results, include=FALSE}
# Printing the weekly and season win percentage     

#how many games correct, incorrect, and not picked each week
weekly_group_correct = map(results, weekly_group_correct_fn)  

#how many games were picked each week
weekly_games_picked = map2(weekly_group_correct, weekly_number_of_games, weekly_games_picked_fn)

#Calculating the number of correct picks for each week
weekly_group_correct_picks = map(weekly_group_correct, weekly_group_correct_picks_fn)

#Calculating weekly win percentage
weekly_win_percentage = map2(weekly_group_correct_picks, weekly_games_picked, weekly_win_percentage_fn)

#Calculating season win percentage
season_win_percentage = round(sum(unlist(weekly_group_correct_picks))/sum(unlist(weekly_games_picked)),4)

#Calculating number of games picked this season
season_games = sum(unlist(weekly_games_picked))

#calculating season wins
season_wins = sum(unlist(weekly_group_correct_picks))

#calculating the number of people who picked this week
Total = dim(inst.picks[[length(weeks)]])[1]
```

```{r plotting group results, include=FALSE}
#Previous Weeks
group_season_for_plotting = unlist(weekly_win_percentage) %>% as.data.frame() %>% 
  rename(`Win Percentage` = ".") %>% 
  add_column(Week = unlist(weeks))
```

```{r Plotting the group results, echo=FALSE}
inst_group_season_plot = group_season_for_plotting %>% 
ggplot(aes(x = as.factor(Week), y = `Win Percentage`))+
  geom_point()+
  geom_path(aes(x = Week))+
  ylim(c(0, 1)) +
  xlab("NFL Week") + 
  ylab("Correct Percentage")+
  ggtitle("Weekly Group Correct Percentage")+
  theme_classic()+
  theme(plot.title = element_text(hjust = 0.5, size = 18))
```

```{r beating cbs week, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_weekly_percent = map(weeks, cbs_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat = map2(cbs_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_total = map(cbs_weekly_percent, experts_tot)
```

```{r beating cbs season, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_season_percent = map(weeks, cbs_season_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat_season = map2(cbs_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_season_total = map(cbs_season_percent, experts_tot)
```

```{r beating ESPN week, include=FALSE}
#Creating a list of correct percentages for each week.
espn_weekly_percent = map(weeks, espn_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat = map2(espn_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_total = map(espn_weekly_percent, experts_tot)
```

```{r beating ESPN season, include=FALSE}
#Creating a list of correct percentages for each week.
espn_season_percent = map(weeks, espn_season_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat_season = map2(espn_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_season_total = map(espn_season_percent, experts_tot)
```

```{r individual results, include=FALSE}
#Creating a list of individual results for each week.
weekly_indiv = pmap(list(inst.picks, winners, weeks), indiv_weekly_pred)

#Combining each week into one dataframe and calculating percentage Correct for this week.  
full_season = weekly_indiv %>% reduce(full_join, by = "Name") %>% 
  mutate(Percent = round(pull(.[,ncol(.)]/weekly_number_of_games[[length(weekly_number_of_games)]]),4)) 

#Creating a dataframe with only the weekly picks
a = full_season %>% select(starts_with("Week"))

#Creating a vector of how many weeks each person picked over the season
tot_week = NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = ifelse(is.na(a[i,j])==T,0,1)
    tot_week[i] = sum(help)
  }
}

#Creating a vector of how many games each person picked over the season
tot_picks= NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = unlist(weekly_games_picked)[j]*ifelse(is.na(a[i,j])==T,0,1)
    tot_picks[i] = sum(help)
  }
}

#Creatign a vector of how many games each person picked correct over the season
tot_correct = NULL
help = NULL
for (i in 1:dim(a)[1]){
  tot_correct[i] = sum(a[i,], na.rm = T)
}

#adding how many weeks each person picked, season correct percentage, and adjusted season percentag to the data frame and sorting the data
indiv_disp = full_season %>% add_column(`Weeks Picked` = tot_week) %>%
  add_column(tot_correct)%>%
  add_column(tot_picks)%>%
  mutate(`Season Percent` = round(tot_correct/tot_picks,4))%>%
  mutate(`Adj Season Percent` = round(`Season Percent`*(tot_week/length(a)),4)) %>%
  select(-tot_correct, -tot_picks) %>%
  arrange(desc(Percent), desc(`Season Percent`)) %>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent))
```


```{r individual percentages, include=FALSE}
#Calculating individual percentages for each week.
weekly_indiv_percent = map2(weekly_indiv, as.list(weekly_number_of_games), indiv_percent) %>% reduce(full_join, by = "Name")

weekly_indiv_percent_plot = weekly_indiv_percent %>% 
  pivot_longer(cols = starts_with("Week"), names_to = "Week", values_to = "Percent")%>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent)) %>% 
  mutate(Week = as.factor(Week))

levels = NULL
for(i in 1:length(weeks)){
  levels[i] = glue("Week {i}")  
}

weekly_indiv_percent_plot = weekly_indiv_percent_plot %>%
  mutate(Week = factor(Week, levels))
```

```{r sparklines, include=FALSE}
#adding sparklines
plot_group = function(name, df){
  plot_object = 
    ggplot(data = df,
           aes(x = as.factor(Week), y=Percent, group = 1))+
    geom_path(size = 7)+
    scale_y_continuous(limits = c(0,1))+
    theme_void()+
    theme(legend.position = "none")
  return(plot_object)
}

sparklines = 
  weekly_indiv_percent_plot %>% 
  group_by(Name) %>% 
  nest() %>% 
  mutate(plot = map2(Name, data, plot_group)) %>% 
  select(-data)
  
indiv_disp_2 = indiv_disp %>% 
  inner_join(sparklines, by = "Name") %>% 
  mutate(`Season Trend` = NA)
```

```{r Printing Individual Table2, echo=FALSE}
# Printing the individual Table
indiv_table = indiv_disp_2 %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Individual Results"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent>.5
    )) %>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(c(plot))

indiv_winners = indiv_disp_2 %>% filter(Percent == max(Percent)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season = indiv_disp_2 %>% filter(`Season Percent` == max(`Season Percent`)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season_adj = indiv_disp_2 %>% filter(`Adj Season Percent` == max(`Adj Season Percent`)) %>% select(Name) %>% pull()%>% paste(collapse = ", ")
```

```{r Printing Season Leaderboard, echo=FALSE}
# Printing the Season Leaderboard
  
season_leaderboard = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```

```{r Printing Adj Season Leaderboard, echo=FALSE}
# Printing the Adj Season Leaderboard
  
adj_season_leaderboard = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Adj Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Adjusted Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))

```


```{r instructor formattable, echo=FALSE}
improvement_formatter <- 
  formatter("span", 
            style = x ~ formattable::style(
              font.weight = "bold", 
              color = ifelse(x > .5, "green", ifelse(x < .5, "red", "black"))),
             x ~ icontext(ifelse(x == max(x), "star", ""), x))

indiv_disp_3 = indiv_disp_2 %>% select(-plot)
indiv_disp_3$`Season Trend` = apply(indiv_disp_3[,2:(1+length(weeks))], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line", chartRangeMin = 0, chartRangeMax = 1, fillColor = "white"))))

indiv_table_2 = as.htmlwidget(formattable(indiv_disp_3, 
                                align = c("l", rep("c", NROW(indiv_disp_3)-1)),
              list(`Season Percent` = color_bar("#FA614B"),
              `Season Percent`= improvement_formatter,
              `Adj Season Percent`= improvement_formatter)))
              
indiv_table_2$dependencies = c(indiv_table_2$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
```

```{r Plotting individual results over the season2, echo=FALSE, out.width = "100%"}
#Creating the individual plot.  
inst_indiv_plots = weekly_indiv_percent_plot %>% 
  ggplot(aes(x = factor(Week), y = Percent, color = Name))+
  geom_point()+
  geom_path(aes(x = as.factor(Week), y = Percent, color = Name, 
                group = Name))+
  ylim(c(0, 1)) +
  labs(x = "NFL Week", 
       y = "Correct Percentage", 
       title = "Weekly Individual Correct Percentage")+
  facet_wrap(~Name)+
  theme_classic()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 18),
        axis.text.x=element_text(angle =45, vjust = 1, hjust = 1))
```

```{r data for data page}
inst.data = map2(inst.picks, weeks, disp_data) %>% bind_rows()
```


```{r fivethirtyeight}
inst_538 = map(results, five38) %>% unlist() %>% sum()
```

```{r pregame, eval=FALSE, include=FALSE}
#Predictions for the week

#Creating the list of group predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Printing table of instructor predictions
pred_table[[length(pred_table)]] %>% mutate(Game = row_number()) %>% 
  rename(`Votes For` = votes_for, `Votes Against` = votes_against) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_options(
    data_row.padding = px(3)
   )
```

Group Predictions
==========================================================================

Sidebar {.sidebar} 
-------------------------------------
#### CBS Sports

<font size="4">

This week we beat or tied `r cbs_experts_beat[[length(weeks)]]` of `r cbs_experts_total[[length(weeks)]]` CBS Sports' Experts.

For the season we are currently beating or tied with `r cbs_experts_beat_season[[length(weeks)]]` of `r cbs_experts_season_total[[length(weeks)]]` CBS Sports' Experts.
 
 </font>


#### ESPN

<font size="4">

We also beat or tied `r espn_experts_beat[[length(weeks)]]` of `r espn_experts_total[[length(weeks)]]` ESPN Experts.
 
For the season we are currently beating or tied with `r espn_experts_beat_season[[length(weeks)]]` of `r espn_experts_season_total[[length(weeks)]]` ESPN Experts.

</font>

Row
--------------------------------------

### Win percentage for the week

```{r}
inst_rate <- weekly_win_percentage[[length(weekly_win_percentage)]]*100
gauge(inst_rate, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Season Win Percentage

```{r}
inst_season <- season_win_percentage*100
gauge(inst_season, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Games Correct
```{r}
valueBox(value = season_wins,icon = "fa-trophy",caption = "Correct Games this Season")
```

### Games Picked
```{r}
valueBox(value = season_games,icon = "fa-clipboard-list",caption = "Games Picked this Season")
```

### Number of predictions
```{r}
valueBox(value = Total,icon = "fa-users",caption = "Predictions this week")
```

Row
--------------------------------------

### 

```{r}
inst_group_table
```

### 

```{r}
ggplotly(inst_group_season_plot) %>% 
  layout(title = list(y = .93, xref = "plot"),
         margin = list(t = 40))
```

Individual Predictions
==========================================================================


Sidebar {.sidebar} 
-------------------------------------

#### Best Picks of the Week.

<font size="4">

 `r indiv_winners`
 
 </font>
 
#### Best Season Correct Percentage
<font size="4">

`r indiv_season`
 
 </font>

#### Best Adjusted Season Correct Percentage
<font size="4">

`r indiv_season_adj`

 * Adjusted season percentage accounts for the number of weeks picked.
 
 </font>

row {.tabset}
--------------------------------------

### Individual Table
```{r}
indiv_table
```

<!--
### Individual Table2

```{r, out.height="100%"}
indiv_table_2
```

-->

### Individual Plots
```{r, out.width="100%"}
ggplotly(inst_indiv_plots)
```

### Season Leaderboard
```{r, out.width="100%"}
season_leaderboard
```

### Adjusted Season Leaderboard
```{r, out.width="100%"}
adj_season_leaderboard
```

Data
==========================================================================

```{r}
datatable(
  inst.data, extensions = 'Buttons', options = list(
    dom = 'Blfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    lengthMenue = list( c(10, 25, 50, 100, -1), c(10, 25, 50, 100, "All") )
  )
)
```